﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;

using SistemaCenterQuimPost.Plantillas; //necesario para obtener fecha, nombre usuario etc,

namespace SistemaCenterQuimPost.UI.PostAdministrador
{
    public partial class frmInformarGastos : SistemaCenterQuimPost.Plantillas.frmPlantillaHijo
    {
        //----------------------ATRIBUTOS--------------------
        
        DataSet2 centerQuimDs;                          //variable que me permitirán conectarme con la base de datos
        DataSet2TableAdapters.GastosTableAdapter gastoTa;


        //--------------------CONSTRUCTORES--------------------
        public frmInformarGastos()
        {
            InitializeComponent();

            centerQuimDs = new DataSet2();   //inicializo las variables que me permitirán acceder a la base de datos.
            gastoTa = new DataSet2TableAdapters.GastosTableAdapter();
        }

        //--------------------ESTADOS---------------------------------

        private void frmInformarGastos_Load(object sender, EventArgs e)
        {
            lblError.Visible = false; //Este label no se usa en la pantalla.
        }

        private void btnBusGastos_Click(object sender, EventArgs e)
        {
            try
            {
             if (cboTurno.Text != "") //Se buscan los gastos por turno.
             {
                 gastoTa.FillByFechayTurno(centerQuimDs.Gastos, dtpFecha.Value.Date, cboTurno.Text.Substring(0, 1));
             }
             else //se buscan los gastos de la fecha.
             {
                 gastoTa.FillByFechaGasto(centerQuimDs.Gastos, dtpFecha.Value.Date);
             }

                if (centerQuimDs .Gastos .Rows .Count > 0)
                {
                    limpiarDatos();
                    cargarGrilla();
                    calcularTotales();
                }
                else
                {
                    MessageBox.Show("No existen gastos para la fecha y turno solicitado.", "BUSQUEDA DE GASTOS", MessageBoxButtons.OK, MessageBoxIcon.Information);
                    limpiarDatos(); //se deja la grilla en blanco.
                }
            }
            catch (Exception ex)
            {
                //Por cualquier otra excepcion se informa el error, en este caso es un error grave.
                MessageBox.Show("La conexión a la base de datos no fué exitosa.\n\n Comuniquese con su desarrollador para solucionar el problema.\n\n" + ex.Message, "ERROR GRAVE - ACCESO A BASE DE DATO", MessageBoxButtons.OK, MessageBoxIcon.Error);
                limpiarDatos();
              }
        }

        private void limpiarDatos()
        {
            dgvGastos.Rows.Clear();
            lblTotalValor.Text = "0";
        }

        private void cargarGrilla()
        {
            for (int i = 0; i < centerQuimDs.Gastos  .Rows .Count ; i++)
            {
                dgvGastos.Rows.Add(centerQuimDs.Gastos[i].concepto, centerQuimDs.Gastos[i].monto);
            }

            
        }

        private void calcularTotales()
        {
            double acum = 0;
        foreach (DataGridViewRow row in dgvGastos .Rows )
        {
            acum += Convert.ToDouble(row.Cells[1].Value);
        }
        lblTotalValor.Text = acum.ToString();
        }

        private string obtenerNombreUsuarioActual()  //Dato necesario para encabezado de Informar Gastos
        {
            frmPlantillaPadre unFrm = (frmPlantillaPadre)this.MdiParent;
            return unFrm.getNombreUsuario();
        }

    }
}
